import 'package:flutter/services.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:flutter_application_demo/log/logger.dart';
import 'package:flutter_application_demo/log/multi_output.dart';
import 'package:flutter_application_demo/log/console_output.dart';
import 'package:flutter_application_demo/log/file_output.dart';

class AppConfig {
  static Future<void> appInit() async {
    WidgetsFlutterBinding.ensureInitialized();
    if (GetPlatform.isAndroid ){
      SystemUiOverlayStyle systemUiOverlayStyle  = const SystemUiOverlayStyle(
        statusBarColor: Colors.red,
      );
      SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle);
    } else {
      // Other platform specific code
    }


    // 初始化日志系统，同时输出到控制台和文件
    // Logger.init(true);
    
    Logger.getInstance(
      loggable: true, // 是否启用日志记录功能
      output: MultiOutput([
        ConsoleOutput(),
        FileOutput(),
      ]),
    );

    Logger.d("这个一个Debug日志");
    Logger.i("这个是一个Info日志");
    Logger.e("这个是一个Error日志");
    
    await serviceInit();
    
  }

  static Future<void> serviceInit() async {
    ///使用 GetX 的 Get.lazyPut() 方法注册一个延迟单例服务。
    ///lazyPut 的作用：
    ///只有在第一次通过 Get.find<RoomService>() 调用时才会创建实例。
    ///如果从未使用，则不会创建，节省资源。
    ///() => RoomService()：
    ///是一个工厂函数，返回一个新的 RoomService 实例。
    ///fenix: true：
    ///这是关键参数！表示即使该服务被手动 Get.delete<RoomService>() 删除，下次 Get.find() 时也会自动重新创建（复活）。
    ///非常适合长期存在的"全局服务"，避免因误删导致崩溃。
    // Get.lazyPut(()=> HttpManager(), fenix: true);



    // 1.初始化数据库
    // await DBManager.init();
    // 2.初始化缓存
    // await CacheManager.init();
    // 3.初始化网络请求
    // await HttpManager.init();
  }
}